A data processing system may include hardware and software components. The hardware components may be considered the lowest level components, and when the data processing system is booted, the software components may then establish a succession of execution environments at successively higher levels. For instance, firmware may execute directly on top of the hardware to create a low-level or first-level execution environment, a virtual machine monitor (VMM) may execute on top of the firmware to create a second-level environment, an operating system (OS) may execute on top of the VMM to create a third-level environment, and user applications may execute on top of the OS.
The firmware in a data processing system may include a system firmware package to establish a basic input/output system (BIOS), along with individual device firmware packages for one or more distinct hardware components in the data processing system. The device firmware packages may include respective firmware packages for a video card, for a mass storage device, and for a network interface, for example. A firmware package may also be referred to as a “firmware module,” as a “firmware resource,” or simply as “firmware.”
The system firmware may maintain a database to identify some or all of the firmware modules in the data processing system. For instance, the system firmware may comply with the Unified Extensible Firmware Interface (UEFI) specification, and the system firmware may use a so-called “Extensible Firmware Interface (EFI) system resource table (ESRT) to identify some or all of the firmware modules in the data processing system. The data processing system may use the ESRT to manage firmware updates.